import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class StudentManager {

    private static List studentList = new ArrayList();

    // 实现学生管理系统
    // main -->快速输出main方法
    // sout -->快速输出System.out.println();
    // ctrl+d --->赋值一行
    // shit+alt+上下键 移动
    // ctrl+x 删除一行
    public static void main(String[] args) {
        // 创建一个扫描器
//        System.out.println("1:添加学生，2:删除学生,3:查看学生。");
        Scanner scanner = new Scanner(System.in);

        // 接收键盘输入
        while (true) { // 循环
            System.out.println("1:添加学生，2:删除学生,3:查看学生,4:修改学生,5:退出。(请输入编号进行对应的操作)");
            int num = scanner.nextInt();
            if (num == 1) { // 用户是添加学生的操作

                System.out.println("请输入学生的姓名:");
                String name = scanner.next();    // 接收用户输入的姓名

                System.out.println("请输入学生的年龄:");
                int age = scanner.nextInt(); // 接收用户输入的年龄

                System.out.println("请输入学生的性别:");
                String sex = scanner.next(); // 接收用户的性别

                System.out.println("请输入学生的手机号:");
                String phone = scanner.next();

                System.out.println("请输入学生的学号:");
                int no = scanner.nextInt();

                // 把学生的信息给封装到一个对象里面
                Student stu = new Student();
                stu.setNum(no);
                stu.setName(name);
                stu.setPhone(phone);
                stu.setSex(sex);
                stu.setAge(age);

                // 把这个对象添加到集合中
                studentList.add(stu);

                System.out.println("【学生添加完成】");
            } else if (num == 2) { // 删除学生的操作
                System.out.println("请输入要删除学生的学号");
                int no = scanner.nextInt(); // 接收要删除学生的学号

                // 从集合中先找到要删除的学生
                for (Object stu : studentList) {
                    Student student = (Student) stu;
                    if (student.getNum() == no) { // 遍历学生的编号和输入要删除学员编号一样说明就找到了
                        studentList.remove(student);
                        System.out.println("【" + student.getName() + "】删除成功");
                        break; // 删除完必须要break，否则会报错
                    }
                }
            } else if (num == 3) {
                if (studentList.size() == 0) {
                    System.out.println("【目前没有学生】");
                } else {
                    for (Object o : studentList) {
                        System.out.println(o);
                    }
                }
            } else if (num == 4) {
                System.out.println("请输入要修改学生的学号");
                int no = scanner.nextInt();
                // 先去查看学生是否存在
                Student stu = getStudentByNo(no);
                if (stu == null) {
                    System.out.println("你修改的学生编号【" + no + "】不存在");
                } else {
                    boolean isUpdate = true;
                    while (isUpdate) {
                        System.out.println("请输入要修改学生的属性");
                        String attributeKey = scanner.next();

                        System.out.println("请输入要修新的属性值");
                        String val = scanner.next();

                        if (attributeKey.equals("name")) {
                            // 用户修改的是姓名
                            stu.setName(val);
                        } else if (attributeKey.equals("age")) {
                            // 用户修改的是年龄
                            stu.setAge(Integer.parseInt(val)); // 类型转行把字符串类型转成int类型
                        } else if (attributeKey.equals("phone")) {
                            // 用户修改的是手机号
                            stu.setPhone(val);
                        } else if (attributeKey.equals("sex")) {
                            // 用户修改的是性别
                            stu.setSex(val);
                        }
                        // 修改完一个属性后，需要询问用户是否继续修改
                        System.out.println("是否继续修改其他属性");
                        String next = scanner.next();
                        if ("no".equals(next)) {
                            isUpdate = false; // 用户输入no后就知道了修改结束了
                        }
                    }
                    System.out.println("修改【" + no + "】成功");
                }
            } else if (num == 5) {
                System.out.println("欢迎下次再来！！！！！");
                System.exit(-1); // 退出JVM
            }
        }
    }

    private static Student getStudentByNo(int no) {
        for (Object o : studentList) {
            Student stu = (Student) o;
            if (stu.getNum() == no) {
                return stu;
            }
        }
        return null;
    }
}
